package cn.iocoder.yudao.module.blog.service.space;

import java.util.*;
import javax.lang.model.type.IntersectionType;
import javax.validation.*;
import cn.iocoder.yudao.module.blog.controller.admin.space.vo.*;
import cn.iocoder.yudao.module.blog.dal.dataobject.space.BlogSpaceDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 动态 Service 接口
 *
 * @author 曹建伟
 */
public interface BlogSpaceService {

    /**
     * 创建动态
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createSpace(@Valid BlogSpaceCreateReqVO createReqVO);

    /**
     * 更新动态
     *
     * @param updateReqVO 更新信息
     */
    void updateSpace(@Valid BlogSpaceUpdateReqVO updateReqVO);

    /**
     * 删除动态
     *
     * @param id 编号
     */
    void deleteSpace(Long id);

    /**
     * 获得动态
     *
     * @param id 编号
     * @return 动态
     */
    BlogSpaceDO getSpace(Long id);

    /**
     * 获得动态列表
     *
     * @param ids 编号
     * @return 动态列表
     */
    List<BlogSpaceDO> getSpaceList(Collection<Long> ids);

    /**
     * 获得动态分页
     *
     * @param pageReqVO 分页查询
     * @return 动态分页
     */
    PageResult<BlogSpaceDO> getSpacePage(BlogSpacePageReqVO pageReqVO);

    /**
     * 获得动态列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 动态列表
     */
    List<BlogSpaceDO> getSpaceList(BlogSpaceExportReqVO exportReqVO);

    void updateSpaceLikeNum(Long spaceId, Integer value);

    void updateSpaceCommentNum(Long spaceId, Integer value);

}
